// const path = require('path');
// const log4js = require('log4js');
//
// class Logger {
//   constructor() {
//     //客户端ip |请求地址 |请求方法 |HTTP版本 |请求状态 |响应时间 |请求来源 |请求内容大小 |浏览器ua
//     this._logFormat = [':remote-addr', ':url', ':method', ':http-version',
//       ':status', ':response-time', ':referrer', ':content-length',
//       ':user-agent'
//     ];
//     this._logPath = path.join(__dirname, "../../logs/");
//     //配置日志信息
//     log4js.configure({
//       appenders: [{
//         type: 'console'
//       }, this._appender('app'), this._appender('access', true), this._appender(
//         'error', true)], //配置app日志、访问日志、错误日志
//       levels: {
//         "error": "ERROR"
//       },
//       replaceConsole: true
//     });
//   }
//
//   //日志类型
//   _appender(logName, isWorker) {
//     let logId = '';
//     if (isWorker) {
//       logId = (process.env.workerUID && process.env.workerUID.toString()) ||
//         "1";
//     }
//     return {
//       type: 'dateFile',
//       absolute: true,
//       filename: path.join(this._logPath, logName + logId),
//       maxLogSize: 1024 * 1024,
//       backup: 3,
//       pattern: "-yyyy-MM-dd.log",
//       alwaysIncludePattern: true,
//       category: logName
//     }
//   };
//
//   getLogger(logName) {
//     return log4js.getLogger(logName);
//   }
//
//   logConnect(logName, format) {
//     let logger = this.getLogger(logName);
//
//     //设置level为auto，遇到4xx和5xx会自动记录error级日志
//     let logPattern = {
//       level: 'auto',
//       format: format || this._logFormat.join(' |')
//     };
//     return log4js.connectLogger(logger, logPattern);
//   }
// }
//
// const errorLogger = new Logger().getLogger('error');
// // const otherLogger = new Logger().getLogger('other');
//
// module.exports = {
//   Logger, errorLogger
// }



// const log4js = require('log4js');
// const logger = log4js.getLogger();
// log4js.loadAppender('file');
// log4js.addAppender(log4js.appenders.file('logs/task.log'), 'task');
// log4js.addAppender(log4js.appenders.file('logs/cdc.log'), 'cdc');
// log4js.addAppender(log4js.appenders.file('logs/posFaye.log'), 'posFaye');
// log4js.addAppender(log4js.appenders.file('logs/uncaught-exception.log'),
//   'uncaught-exception');
// const taskLogger = log4js.getLogger('task');
// const cdcLogger = log4js.getLogger('cdc');
// const posFayeLogger = log4js.getLogger('posFaye');
// const uncaughtExceptionLogger = log4js.getLogger('uncaught-exception');
// taskLogger.setLevel('warn');
// cdcLogger.setLevel('warn');
// posFayeLogger.setLevel('warn');
// uncaughtExceptionLogger.setLevel('warn');

class Logger {
  constructor(type) {
    this.type = type;
  }
  error(message) {
    message.type = this.type;
    Logger.errorConsole(message);
  }
  fatal(message) {
    message.type = this.type;
    Logger.fatalConsole(message);
  }
  static errorConsole(message) {
    message.level = "error";
    Logger.console(message);
  }


  static fatalConsole(message) {
    message.level = "fatal";
    Logger.console(message);
  }

  static console(message) {
    console.log("log date:   " + new Date() + "=======>   ", JSON.stringify(message))
  }
}




var taskLogger = new Logger("task"),
  cdcLogger = new Logger("cdc"),
  posFayeLogger = new Logger("posFaye"),
  uncaughtExceptionLogger = new Logger("uncaughtException");

module.exports = {
  taskLogger, cdcLogger, posFayeLogger, uncaughtExceptionLogger
}
